## 10. 标准库简介
pass

### 10.1. 操作系统接口

'''os
一定要用 import os
dir(os)
help(os)
'''
import os
print(os.getcwd())

'''shutil
日常文件和目录管理任务

import shutil
shutil.move()
shutil.copy()
'''
import shutil
print(shutil.get_terminal_size())

### 10.2. 文件通配符

'''glob
在目录中使用通配符搜索创建文件列表的函数
'''
import glob
print(glob.glob('*.py'))

### 10.3. 命令行参数

'''sys
通用实用程序脚本通常需要处理命令行参数
sys 模块的 argv 属性中
'''
import sys
print(sys.argv)

'''argparse
更复杂的机制来处理命令行参数

import argparse
parser = argparse.ArgumentParser(prog = 'top',
                                 description = 'Show top lines from each file')
parser.add_argument('filenames', nargs='+')
parser.add_argument('-l', '--lines', type=int, default=10)
args = parser.parse_args()
print(args)
'''

### 10.4. 错误输出重定向和程序终止

'''sys
sys.stdin
sys.stdout
sys.stderr

终止脚本
sys.exit()
'''

sys.stderr.write('Warning, log file not found starting a new one\n')

### 10.5. 字符串模式匹配

'''re
正则
'''

simple_str = 'tea for too'
simple_str.replace('too', 'tow')
print(simple_str)

### 10.6. 数学

'''math
对浮点数学的底层C库函数的访问
'''
import math
print(math.cos(math.pi /4))
print(math.log(1024, 2))

'''random
'''
import random
print(random.choices(['a', 'b', 'c']))
print(random.sample(range(1000), 10))
print(random.random())
print(random.randrange(6))

'''statistics
计算数值数据的基本统计属性（均值，中位数，方差等）
'''
import statistics
data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
print(statistics.mean(data))

'''SciPy项目
有许多用于数值计算的模块
'''

### 10.7. 互联网访问

'''urllib.request
一般简单请求足够使用, 
第三方库 requests 更强大  
'''
from urllib.request import  urlopen
gank_api = 'https://gank.io/api/v2/banners'

with urlopen(gank_api) as response:
    for line in response:
        line = line.decode('utf-8')
        print(line)

'''smtplib
邮件
'''

### 10.8. 日期和时间

'''datetime
'''
from  datetime import date
now = date.today()
print("now: " , now )
now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")

'''
support calendar arithmetic
'''
birthday = date(1964, 7, 31)
age = now - birthday

print(f"birthday: {birthday}, age: {age.days}")

### 10.9. 数据压缩

'''数据存档和压缩格式
zlib, gzip, bz2, lzma, zipfile 和 tarfile
'''
import zlib
s = b'witch which has which witches wrist watch'
print("len(s): ", len(s))
t = zlib.compress(s)
print(f"compress : {t} \n, len(t): {len(t)} \n , decompress: {zlib.decompress(t)}")

### 10.10. 性能测量

'''
timeit
profile
pstats 
'''

### 10.11. 质量控制

'''doctest
扫描模块并验证程序文档字符串中嵌入的测试

unittest  -- 写测试类
它允许在一个单独的文件中维护更全面的测试集:
'''

### 10.12. 自带电池

'''Python有“自带电池”的理念

例如
json 包
csv 模块
sqlite3 模块
等等
'''